home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1994 March
/
Internet Info CD-ROM (Walnut Creek) (March 1994).iso
/
inet
/
internet-drafts
/
draft-ietf-avt-rtp-02.txt
< prev
next >
Wrap
Text File
|
1993-07-30
|
77KB
|
1,623 lines
Internet Engineering Task Force Audio-Video Transport WG
INTERNET-DRAFT H. Schulzrinne/S. Casner
AT&T/ISI
July 30, 1993
Expires: 10/01/93
RTP: A Real-Time Transport Protocol
Status of this Memo
This document is an Internet Draft. Internet Drafts are working documents
of the Internet Engineering Task Force (IETF), its Areas, and its Working
Groups. Note that other groups may also distribute working documents as
Internet Drafts.
Internet Drafts are draft documents valid for a maximum of six months.
Internet Drafts may be updated, replaced, or obsoleted by other documents
at any time. It is not appropriate to use Internet Drafts as reference
material or to cite them other than as a ``working draft'' or ``work in
progress.''
Please check the I-D abstract listing contained in each Internet Draft
directory to learn the current status of this or any other Internet Draft.
Distribution of this document is unlimited.
Abstract
This draft describes a real-time transport protocol (RTP)
suitable for the network transport of real-time data, such as
audio, video or simulation data for both multicast and unicast
transport services. The data transport is enhanced by a
control protocol (RTCP) designed to provide minimal control and
identification functionality particularly in multicast networks.
RTP and RTCP are designed to be independent of the underlying
transport and network layers. The protocol supports the use of
RTP-level translators and bridges. Within multicast associations,
sites can direct control messages to individual sites.
This specification is a product of the Audio-Video Transport working group
within the Internet Engineering Task Force. Comments are solicited and
should be addressed to the working group's mailing list at rem-conf@es.net
and/or the authors.
INTERNET-DRAFT RTP July 30, 1993
Contents
1 Introduction 2
2 Protocol Conventions 3
3 Real-time Data Transfer Protocol -- RTP 4
3.1 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.2 RTP Fixed Header Fields . . . . . . . . . . . . . . . . . . . . . . 6
3.3 The RTP Options . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4 Reverse-Path Option . . . . . . . . . . . . . . . . . . . . . . . . 9
3.5 Security Options . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.6 The Use of the Security Options . . . . . . . . . . . . . . . . . . 15
4 Real Time Control Protocol --- RTCP 17
5 Security Considerations 22
6 RTP over network and transport protocols 23
6.1 Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.2 ST-II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A Implementation Notes 24
A.1 Timestamp recovery . . . . . . . . . . . . . . . . . . . . . . . . 24
A.2 Detecting the Beginning of a Synchronization Unit . . . . . . . . . 25
A.3 Demultiplexing and Locating the Synchronization Source . . . . . . 26
B Addresses of Authors 27
1 Introduction
This draft concisely specifies a real-time transport protocol. A discussion
of the design decisions can be found in the current version of the companion
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 2]
INTERNET-DRAFT RTP July 30, 1993
Internet draft draft-ietf-avt-issues.txt. The transport protocol provides
end-to-end delivery services for one or more s_t_r_e_a_m_s_ of data with real-time
characteristics, for example, interactive audio and video. It does n_o_t_
guarantee delivery or prevent out-of-order delivery, nor does it assume that
the underlying network is reliable and delivers packets in sequence. [The
sequence numbers included in RTP allow the end system to reconstruct the
sender's packet sequence, but sequence numbers may also be used to determine
the proper location of a packet, for example in video decoding, without
necessarily decoding packets in sequence]. RTP is designed to run on top
of a variety of network and transport protocols, for example, IP, ST-II
or UDP. [For most applications, RTP offers insufficient demultiplexing to
run directly on IP.] RTP transfers data in a single direction, possibly to
multiple destinations if supported by the underlying network. A mechanism
for indicating a return path for control data is provided.
While RTP is primarily designed to satisfy the needs of multi-participant
multimedia conferences, it is not limited to that particular application.
Storage of continuous data, interactive distributed simulation, active badge
and control and measurement applications may also find RTP applicable.
Profiles are used to instantiate certain header fields and options for
particular sets of applications. A profile for audio and video data may be
found in the companion Internet draft draft-ietf-avt-profile.txt.
This document defines two packet formats and protocols:
o the real-time transport protocol (RTP) for exchanging data with
real-time properties.
o the real-time control protocol (RTCP) for conveying information about
the sites in an on-going association. RTCP options may be ignored
without affecting the ability to correctly receive data. RTCP is used
for loosely controlled conferences, i.e., where there is no explicit
admission control and set-up. Its functionality may be subsumed by
a conference control protocol (which is beyond the scope of this
document).
2 Protocol Conventions
Control fields (options) for RTP and RTCP share the same structure and
numbering space and are carried within the same packet. Options may appear
in any order, unless specifically restricted by the option description.
[The position of some security options may have significance.] Each option
consists of the final bit, the option type designation, a one-octet length
field denoting the total number of 32-bit long words comprising the option
(including final bit, type and length), and finally any option-specific
data. The last option before the packet data portion (``payload'') has the
'F' (final) bit set to one, for all other options this field has a value of
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 3]
INTERNET-DRAFT RTP July 30, 1993
zero.
Fields within the fixed header and within options are aligned to the natural
length of the field, i.e., 16-bit words are aligned on even addresses,
32-bit long words are aligned at addresses divisible by four, etc. Octets
designated as padding have the value zero. Options unknown to the RTP
implementation or the application are to be ignored. Options with option
types having values from 64 to 127 inclusive are to be used for private
extensions. Fields designated as 'reserved' or 'R' are set aside for future
use; they should be set to zero by senders and ignored by receivers.
All integer fields are carried in network byte order, that is, most
significant byte (octet) first. The transmission order is described in
detail in [1], Appendix A. Unless otherwise noted, numeric constants are in
decimal (base 10). Numeric constants prefixed by '0x' are in hexadecimal.
Textual information is encoded accorded to the UTF-2 encoding of the ISO
standard 10646 (Annex F) [2,3]. US-ASCII is a subset of this encoding and
requires no additional encoding. The presence of multi-byte encodings is
indicated by setting the most significant bit to a value of one. A byte
with a binary value of zero may be used as a string terminator for padding
purposes.
[Text in square brackets is intended to motivate the design decisions made.]
3 Real-time Data Transfer Protocol -- RTP
3.1 Definitions
P_a_y_l_o_a_d_ is the data following the RTP fixed header and the RTP/RTCP options.
The payload format and interpretation are beyond the scope of this memo. A
valid RTP packet may carry no payload.
An R_P_D_U_ stands for RTP protocol data unit. It consists of the encapsulation
specific to a particular underlying protocol, the fixed RTP header, RTP and
RTCP options (if any) and the payload, if any.
A s_y_n_c_h_r_o_n_i_z_a_t_i_o_n_ s_o_u_r_c_e_ is the combination of one or more content sources
with its own timing. The RPDUs emitted by a synchronization source
have non-decreasing sequence numbers and time stamps (modulo their field
lengths). The audio coming from a microphone or the video from a source
are examples of synchronization sources. Typically, a single source emits a
single medium (e.g., audio or video). A synchronization source is a member
of exactly one channel, as defined below. A synchronization source may
change its data format over time. Synchronization sources are identified
by their source network address, source transport address (e.g., UDP source
port) and the value of SSRC identifier carried in the SSRC option. If the
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 4]
INTERNET-DRAFT RTP July 30, 1993
SSRC option is not present, a value of zero for that identifier is assumed.
A c_o_n_t_e_n_t_ s_o_u_r_c_e_ is the actual source of the data carried, for example, the
user and host that originally generated the audio data. One or more content
sources may contribute data for one synchronization source. Content sources
are used for identifying the logical source of the data; they have no effect
on the delivery of the data itself.
A n_e_t_w_o_r_k_ s_o_u_r_c_e_ is the network-level origin of the RPDUs as seen by the
receiving end system.
All sources sending to the same destination network address and
transport-level address using the same RTP flow identifier belong to same
c_h_a_n_n_e_l_.
An e_n_d_ s_y_s_t_e_m_ generates the content to be used in RTP packets and delivers
the content of received RTP packets to the user application. An end system
can act as one or more synchronization sources. (Most end systems are
expected to be a single synchronization source.)
An (RTP-level) b_r_i_d_g_e_ receives RTP packets from one or more sources,
combines them in some manner and then forwards a new RTP packet. A bridge
may change the data format. Since the timing among multiple input source
will not generally be synchronized, the bridge will make timing adjustments
among the streams and generate its own timing for the combined stream.
Therefore, bridges are synchronization sources, with each of the sources
whose packets were combined into an outgoing RTP packet as the content
sources for that outgoing packet. Audio bridges and media converters are
examples of bridges. Example: assume SMITH@FOO and JONES@BAR are using a
bridge to translate their audio from one encoding to another. The bridge
mixes audio packets from Smith and Jones together and forwards the mixed
packets. If, say, Smith was talking, she is indicated as the content
source of the outgoing packet, allowing the receiver to properly display the
current speaker rather than just the bridge that mixed the audio. For
an end system receiving RTP packets from that bridge, the bridge is the
synchronization source and Smith the content source. The RTP-level bridges
described in this document are unrelated to the data link-layer bridges
found in local area networks. If there is possibility for confusion, the
term 'RTP-level bridge' should be used. [The name 'bridge' follows common
telecommunication usage.]
An (RTP-level) t_r_a_n_s_l_a_t_o_r_ does not alter the timing of packets. Examples of
its use include encoding conversion without mixing or retiming, conversion
from multicast to unicast, and application-level filters in firewalls.
A translator is neither a synchronization nor a content source. The
properties of bridges and translators are summarized in Table 1. Checkmarks
in parentheses designate possible, but unlikely actions.
A s_y_n_c_h_r_o_n_i_z_a_t_i_o_n_ u_n_i_t_ consists of one or more packets that, as a group,
share a common fixed delay between generation and playout of each part of
the group, or can only be scheduled as a whole. The delay may change at the
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 5]
INTERNET-DRAFT RTP July 30, 1993
end sys. bridge translator
mix sources -- x --
change encoding N/A x x
encrypt x x (x)
sign for authentication x x --
touch content x x (x)
insert CSRC -- x --
insert SSRC x x x
insert SDST x x --
insert SDES x x --
Table 1: The properties of end systems, bridges and translators
beginning of such a synchronization unit. The most common synchronization
units are talkspurts for voice and frames for video transmission.
N_o_n_-_R_T_P_ m_e_c_h_a_n_i_s_m_s_ refers to other protocols and mechanisms that may be
needed to provide a useable service. In particular, for multimedia
conferences, a conference control application may distribute encryption
and authentication keys, negotiate the encryption algorithm to be used,
determine the mapping from the RTP format field to the actual data format
used. For simple applications, electronic mail or a conference database may
also be used. The specification of the mechanism itself is outside the
scope of this memorandum.
3.2 RTP Fixed Header Fields
The RTP header has the following format:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| FlowID |P|S| format | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp (seconds) | timestamp (fraction) |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| options ... |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
The fields in the first eight octets are present in every RTP packet and
have the following meaning:
protocol version: 2 bits
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 6]
INTERNET-DRAFT RTP July 30, 1993
Defines the protocol version. The version number of the protocol
defined in this memo is one.
FlowID: 6 bits
The value of the field is the flow identifier, which forms part of
the tuple identifying a channel (see definition above). [The flow ID
field is convenient if several different channels are to receive the
same treatment by the underlying layers or if a profile allows for
the concatenation of several RPDUs on different channels into a single
protocol data unit of the underlying protocol layer.]
option present bit (P): 1 bit
This flag has a value of one if the fixed RTP header is followed by one
or more options and a value of zero otherwise.
end-of-synchronization-unit (S): 1 bit
This flag has a value of one in the last packet of a synchronization
unit, a value of zero otherwise. [As shown in Section A, the beginning
of a synchronization unit can be readily established from this flag.
If this flag were to signal to the beginning of a synchronization unit,
the end of a synchronization unit could not be established in real
time.]
format: 6 bits
The 'format' field forms an index into a table defined through
the RTCP FMT option or non-RTP mechanisms (see Section 3.1. The
mapping establishes the format of the RTP payload and determines its
interpretation by higher layers. If no mapping has been defined in
this manner, a standard mapping is specified by the companion profile
document, RFC TBD. Also, default formats may be defined by the current
edition of the Assigned Numbers RFC.
sequence number: 16 bits
The sequence number counts RPDUs. The sequence number increments by
one for each packet sent. [The sequence number may be used by the
receiver to detect packet loss, to restore packet sequence and to
identify packets to the application.]
timestamp: 32 bits
The timestamp reflects the wallclock time when the RPDU was generated.
The timestamp consists of the middle 32 bits of a 64-bit NTP timestamp,
as defined in RFC 1305 [4]. Several consecutive packets may have equal
timestamps.
The timestamp of the first packet(s) within a synchronization unit
is expected to closely reflect the actual sampling instant, measured
by the local system clock. The local system clock should be
controlled by a time synchronization protocol such as NTP if such
a service is available. It is not expected that the local system
clock be referenced to obtain the timestamp for the beginning of
every synchronization unit, but the local clock should be referenced
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 7]
INTERNET-DRAFT RTP July 30, 1993
frequently enough so that clock drift between synchronized system clock
and sampling clock can be compensated for gradually. Within one
synchronization unit, it may be appropriate to compute timestamps based
on the logical timing relationships between the packets. For audio
samples, for example, the nominal sampling interval may be used. If
the clock quality field of the CDES option does not indicate otherwise,
it is assumed that the timestamp at the beginning of a synchronization
unit is derived from a synchronized system clock. However, it is
allowable to operate without synchronized time on those systems where
it is not available, unless a profile or session protocol requires
otherwise.
3.3 The RTP Options
The packet header may be followed by options and the payload. Options are
summarized below. Unless otherwise noted, each option may appear only once
per packet. Each packet may contain any number of options. A conforming
implementation of RTP has to support the RTP options listed here, unless
otherwise noted.
CSRC 0 Content source identifiers. The content source option is inserted
only by bridges and identifies all sources that contributed to the
packet. For example, for audio packets, all sources that were mixed
together to create this packet are listed, allowing correct talker
indication at the receiver. Each CSRC option may contain one or
more content source identifiers, each 16 bits long. The identifier
values must be unique for all content sources received through a
particular synchronization source (bridge) on a particular channel;
the value of binary zero is reserved and may not be used. If the
number of content sources is even, the two octets needed to pad the
list to a multiple of four octets are set to zero. There should
only be a single CSRC option within a packet. If no CSRC option is
present, the content source identifier is assumed to have a value of
zero. CSRC options are not modified by RTP-level translators.
A conformant RTP implementation does not have to be able to generate
or interpret the CSRC option.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| CSRC | length | content source identifier ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
SSRC 1 Synchronization source identifier. The SSRC option may be
inserted by RTP-level translators, end systems and bridges. It
is typically used only by translators, but it may be used by an
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 8]
INTERNET-DRAFT RTP July 30, 1993
end system application to distinguish several sources sent with the
same lower-layer source address. Each synchronization source with
the same lower-layer address (e.g., the same IP address and UDP
port) must have a distinct SSRC. Synchronization sources that are
distinguishable by their lower-layer address do not require the use
of SSRC options. The SSRC value zero is reserved and must not be
used. If no SSRC option is present, the network source is assumed
to indicate the synchronization source. There must be no more than
one SSRC identifier per packet; thus, a translator must remap the
SSRC identifier of an incoming packet into a new, locally unique
SSRC identifier. The SSRC option may be considered in functionality
as an extension of the source port number in protocols like UDP,
ST-II or TCP.
A RTP receiver must support the SSRC option. RTP senders only need
to support this option if they intend to send more than one source
to the same channel using the same source port.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| SSRC | length = 1 | identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
BOP 3 (beginning of playout unit) 16-bit sequence number designating the
first packet within the current playout unit.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| BOP | length = 1 | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.4 Reverse-Path Option
With two-party (unicast) communications, relaying back control information
to the sender is easy. For multicast communications, control information
can be sent to all members of the group. It may, however, be desirable to
send a message to an individual member of a multicast group, for example
to request retransmission of a particular data frame or to request/send a
reception quality report. For this particular use, we introduce a mechanism
for sending so-called reverse RPDUs. The RPDU format of reverse RPDUs is
exactly the same as for regular messages and they can make use of all
the options defined in this memorandum. Reverse RPDUs travel through the
same translators as other RPDUs. The receiver distinguishes reverse RPDUs
by their arrival on a different transport selector (e.g., a different UDP
port), namely the same one which is used as a source transport selector
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 9]
INTERNET-DRAFT RTP July 30, 1993
(e.g., UDP source port) for forward RPDUs. A receiver of reverse RDPUs
cannot rely on any sequence number ordering, as a sender may use the same
sequence number space while communicating through this reverse mechanism
with several receivers. The sequence number space of reverse RPDUs has to
be completely separate from that used for RPDUs sent to the multicast group.
If the same sequence number space were used, the members of the multicast
group not receiving reverse RPDUs would detect a gap in their received
sequence number space.
SDST 2 Synchronization destination identifier. The SDST option is only
inserted by RTP end systems and bridges if they want to send
unicast information to a particular site within the multicast group.
Packets containing an SDST option must not contain an SSRC option
and vice versa. The identifier value zero is allowed, unlike for
SSRC options (see example below).
Denote the the end system that wants to return a unicast message by
S and the desired destination end system of that unicast message by
D. If the multicast packets received by S from D contain no SSRC
option, S and D must be directly connected, without an intervening
translator. No SDST option is need in this case.
If the multicast packet received by S from D contain an SSRC option,
S inserts an SDST option using the identifier contained in the
SSRC option received from D. D then forwards the packet to the
source network and transport address found in the multicast packets
coming from D. The packet will thus reach the translator on the
path between S and D closest to S. The arrival on that transport
address tells the translator that the packet is a unicast reverse
control packet. The translator determines which source it maps
into the identifier contained in the SDST option and replaces the
SDST identifier by that value. In other words: if a forward RTP
packet carries SSRC identifier X between two systems (either two
translators or an end system and a translator), the unicast reverse
control packet will carry SDST with identifier X between those two
systems.
Example for UDP: T1 and T2 are translators between end systems
S and D. In the forward direction, D sends regular RTP packets
with no SSRC to (among other multicast group members) translator T2
with destination port 3456 and source port 5678; T2 inserts SSRC
identifier 13 and forwards to translator T1 on source port 4590
and destination port 3456; T1 translates SSRC 13 into SSRC 8 and
forwards to S using destination port 3456 and source port 12789. In
the unicast reverse RPDU, site S sends the packet to translator T1,
destination port 12789 with SDST value 8. T1 replaces SDST value 8
with SDST value 13 and forwards to translator T2 with destination
port 4590. T2 finally sends the message with SDST value 0 to site D
at destination port 5678. By its arrival port, site D determines
that the RPDU is a reverse RPDU and treat it accordingly.
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 10]
INTERNET-DRAFT RTP July 30, 1993
[Reverse control unicast packets are already identified by their
destination transport address, so SSRC could be used for reverse
control packets. A separate option is used to limit confusion.]
Only applications that need to send or receive unicast control
information flow need to implement the SDST option.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| SDST | length = 1 | identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.5 Security Options
The security options below offer message integrity, authentication and
privacy and the combination of the three.
Support for the security options is not mandatory, but see the discussion
for the ENC option. The four message integrity check options --- MIC, MICA,
MICK and MICS --- are mutually exclusive, i.e., only one of them should be
used for a single RPDU.
All message integrity check options are computed over the fixed header,
the ENC option preceding the message integrity check option (if present),
the first four octets of the message integrity check option and the data
(remaining header and payload) following the message integrity check option.
The message integrity check options and the ENC option shall not cover
the SSRC and SDST options, i.e., SSRC and SDST must be inserted between
the fixed header and the ENC or message integrity check options, as SSRC
and SDST are subject to change by translators that are likely not in
possession of the necessary descriptor table (see below) and encryption
keys. Translators that have the necessary keys and descriptor translation
table may modify the contents of the RPDU, unless the MICA option is used
(see MICA description).
All security options carry a one-octet descriptor field. This descriptor
is an index into two tables, one for the message integrity check options,
one for the ENC option, established by non-RTP means, containing digest
algorithms (MD2, MD5, etc.), encryption algorithms (DES variants) and
encryption keys or shared secrets (for the MICK option). All sources within
the same channel share the same table. The descriptor value may change
during a session, for example, to use a different set of encryption keys.
The descriptor value zero describes a set of default algorithms to be used:
MD5 for the message digest algorithm, DES CBC for the encryption algorithm.
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 11]
INTERNET-DRAFT RTP July 30, 1993
The MIC, MICK and MICS message integrity checks offer g_r_o_u_p_ a_u_t_h_e_n_t_i_c_a_t_i_o_n_,
that is, the receiver can ascertain that the RPDU originated from a member
of the group of sites sharing a common secret, but the receiver cannot
authenticate which of the sources among that group sent the data. The
receiver can also be assured that nobody outside the group tampered with the
RPDU.
ENC 8 All packet data after this option, but not the fixed header,
is encrypted, using the encryption key and symmetric encryption
algorithm specified by the descriptor field. The descriptor value
may change over time to accomodate varying security requirements or
reduce the amount of ciphertext using the same key. [For example,
in a network interview, the candidate and interviewers could share
one key, with a second key set aside for the interviewers only. For
symmetric keys, source-specific keys offer no advantage.]
The descriptor value zero is reserved for a default mode using
the Data Encryption Standard (DES) algorithm in CBC (cipher block
chaining) mode, as described in Section 1.1 of RFC 1423 [5]. The
padding specified in that section is to be used. The 8-octet
initialization vector (IV) may be carried unencrypted within the ENC
option or generated anew for each packet. If the ENC option does
not contain an initialization vector (indicated by an option length
of 1), the fixed RTP header is used as the IV. [Using the fixed
RTP header as the IV avoids regenerating the IV for each packet
and incurs less header overhead.] For details on the tradeoffs
for CBC IV use, see [6]. Support for encryption is not required.
Implementations that do not support encryption should recognize the
ENC option so that they can avoid processing encrypted messages
and provide a meaningful failure indication. Implementations that
support encryption should, at the minimum, always support the DES
CBC algorithm.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| ENC | length = 3 | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DES (CBC) initialization vector, bytes 0 through 3 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DES (CBC) initialization vector, bytes 4 through 7 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| ENC | length = 1 | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 12]
INTERNET-DRAFT RTP July 30, 1993
MIC 9 Messsage integrity check. The MIC option option is used only in
combination with the ENC option immediately preceding it to provide
privacy and group membership authentication. The message integrity
check uses the digest algorithm specified by the descriptor field.
The value zero implies the use of the MD5 message digest. Note that
the MIC option is not separately encrypted.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| MIC | length | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| message digest (unencrypted) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MICA 10 Message integrity check, asymmetric encryption. Currently, only
the use of the MD2 and MD5 message digest algorithms is defined, as
described in RFC 1319 [7] (as corrected in Section 2.1 of RFC 1423)
and RFC 1321 [8], respectively. The MD2 and MD5 message digests are
16 octets long.
``To avoid any potential ambiguity regarding the ordering of the
octets of an MD2 message digest that is input as a data value
to another encryption process (e.g., RSAEncryption), the following
holds true. The first (or left-most displayed, if one thinks in
terms of a digest's "print" representation) octet of the digest
(i.e., digest[0] as specified in RFC 1319), when considered as
an RSA data value, has numerical weight 2**120. The last (or
right-most displayed) octet (i.e., digest[15] as specified in RFC
1319) has numerical weight 2**0.'' [RFC 1423, Section 2.1]
``To avoid any potential ambiguity regarding the ordering of the
octets of a MD5 message digest that is input as an RSA data value to
the RSA encryption process, the following holds true. The first (or
left-most displayed, if one thinks in terms of a digest's "print"
representation) octet of the digest (i.e., the low-order octet of
A as specified in RFC 1321), when considered as an RSA data value,
has numerical weight 2**120. The last (or right-most displayed)
octet (i.e., the high-order octet of D as specified in RFC 1321) has
numerical weight 2**0.'' [RFC 1423, Section 2.2]
The message digest is encrypted, using asymmetric keys, with the
sender's private key using the algorithm described in Section 4.2.1
of RFC 1423: ``As described in PKCS #1, all quantities input as
data values to the RSAEncryption process shall be properly justified
and padded to the length of the modulus prior to the encryption
process. In general, an RSAEncryption input value is formed by
concatenating a leading NULL octet, a block type BT, a padding
string PS, a NULL octet, and the data quantity D, that is, RSA input
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 13]
INTERNET-DRAFT RTP July 30, 1993
value = 0x00, BT, PS, 0x00, D. To prepare a MIC for RSAEncryption,
the PKCS #1 ``block type 01'' encryption-block formatting scheme
is employed. The block type BT is a single octet containing the
value 0x01 and the padding string PS is one or more octets (enough
octets to make the length of the complete RSA input value equal
to the length of the modulus) each containing the value 0xFF. The
data quantity D is comprised of the MIC and the MIC algorithm
identifier.''. The encoding is described in detail in RFC 1423.
For encrypting MD2 and MD5, the data quantity D is comprised of the
16-byte checksum, preceded by the binary sequences shown here in
hexadecimal: 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48,
0x86, 0xF7, 0x0D, 0x02, 0x02, 0x05, 0x00, 0x04, 0x10 for MD2 and
0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86, 0xF7,
0x0D, 0x02, 0x05, 0x05, 0x00, 0x04, 0x10 for MD5.
The signature is padded as necessary. The value of the padding is
left unspecified. [Note: The number of non-padding bits within the
signature is known to the receiver as being equal to the key length.
The MIC algorithm is identified through the bytes prepended to the
actual 16-byte signature.]
Contrary to what is specified in RFC 1423 for privacy enhanced mail,
the asymmetrically signed MIC is carried in binary, NOT represented
in the printable encoding of RFC 1421, Section 4.3.2.4. The
encrypted length of the signature will be equal to the modulus of
the RSA encryption used, rounded to the next integral byte count.
The modulus and public key is conveyed to the receivers by non-RTP
means. [Note: Asymmetric keys are used since symmetric keys would
not allow authentication of the individual source in the multicast
case.]
A translator that receives an RPDU is not allowed to modify the
parts of the RPDU covered by the MICA option as the receiver would
have no way of establishing the identity of the translator and thus
could not verify the integrity of the RDPU.
Support for sending or interpreting MICA options is not required.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| MICA | length | encrypted message-digest ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MICK 11 Message integrity check, keyed. This message integrity check
does not require encryption. In addition to the RPDU parts to be
included in the message digest according to the introduction to this
section, the shared secret is placed in the MICK option and included
in the message digest. (The shared secret is equivalent to the
key used for the MICS and ENC options, but is 16 octets long, if
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 14]
INTERNET-DRAFT RTP July 30, 1993
necessary by padding with binary zeroes.) The shared secret in the
MICK option is then replaced by the computed 128-bit digest.
The receiver saves the message digest contained in the MICK option,
replacing it with the shared secret key and computes the message
digest in the same manner as the sender. If the RPDU has not been
tampered and originated with one of the holders of the secret key,
the computed message digest will agree with the digest found on
reception in the MICS option.
[The message integrity check follows the practice of SNMP Version 2,
as described in RFC 1446, Section 1.5.1. The MICS option itself
is covered by the digest in order to detect tampering with the
descriptor field itself. Using the secret key in the signature
instead of encrypting the MD5 message digest avoids the use of an
encryption algorithm when only authentication is desired. However,
the security of this approach has not been as well established as
that based on encrypting message digests, as used in the MICS, MIC
and MICA options.]
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| MICS | length | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| encrypted message digest ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
MICS 12 Message integrity check, symmetric-key encrypted. This message
integrity check encrypts the message digest using DES ECB mode as
described in RFC 1423, Section 3.1.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| MICS | length | reserved | descriptor |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| encrypted message digest ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3.6 The Use of the Security Options
Combinations of the message integrity check and ENC security options can be
used to provide a variety of security services:
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 15]
INTERNET-DRAFT RTP July 30, 1993
confidentiality: Confidentiality here means that only the intended
receiver(s) can decode the received RTP packets; for others, the data
contains no useful information. Confidentiality of the content is
achieved by encryption using DES. The presence of encryption and the
initialization vector is indicated by the ENC option. [Note: for
efficiency reasons, this specification does not insist that content
encryption only be used in connection with message integrity and
authentication mechanisms. In most all cases, it will be obvious to
the person receiving the data if he or she does not possess the right
encryption key.]
authentication and message integrity: In combination with certificates, the
receiver can ascertain that the claimed originator is indeed the
originator of the data (authentication) and that the data has not
been altered after leaving the sender (message integrity). These two
security services are provided by the message integrity check options.
Certificates for MICA must be distributed through means outside of RTP.
The services offered by MICA and MIC/MICK/MICS differ: MIC/MICK/MICS
differ: With MIC/MICK/MICS, the receiver can only verify that the
message originated within the group holding the secret key, rather than
authenticate the sender of the message, while the MICA option affords
true authentication of the sender.
authentication, message integrity, and confidentiality: By carrying both
the message integrity check and ENC option in RTP packets, the
authenticity, message integrity and confidentiality of the packet can
be assured (subject to the limitations discussed in the previous
paragraph).
The message integrity check is applied first to the all parts of the
outgoing packet to be authenticated, and the message integrity check
option is prepended to those parts. Then, the packet including the
message integrity check option is encrypted using the shared secret
key. The ENC option must be followed immediately by the message
integrity check option, without any other options in between. The
receiver first decrypts the octets following the ENC option and then
authenticates the decrypted data using the signature contained in the
message integrity check option.
For this combination of security features and group authentication, the
combination ENC and MIC is recommended (instead of MICS or MICK) as it
yields the lowest processing overhead.
A message integrity check option followed by an ENC option should not be
used.
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 16]
INTERNET-DRAFT RTP July 30, 1993
4 Real Time Control Protocol --- RTCP
The real-time control protocol (RTCP) conveys minimal control and advisory
information during a conference. It provides support for loosely controlled
conferences, i.e., where participants enter and leave without admission
control and parameter negotiation. The services provided by RTCP services
enhance RTP, but an end system does not have to implement RTCP features to
participate in conferences(1). RTCP does not aim to provide the services
of a conference control protocol and does not provide some of the services
desirable for two-party conversations. If a conference control protocol is
in use, the services of RTCP should not be required. (Note: as of the
writing of this document, a conference or session control protocol has not
been specified within the Internet.)
Unless otherwise noted, control information is carried periodically as
options within RPDUs, with or without payload. RTCP packets are sent to
all members of a conference. These packets are part of the same sequence
nubmer space as RTP packets not containing RTCP options. The period should
be varied randomly to avoid synchronization of all sources and its mean
should increase with the number of participants in the conference to limit
the growth of the overall network and host interrupt load. The length of
the period determines, for example, how long a receiver joining a conference
has to wait in the worst case until it can identify the source. A receiver
may remove from its list of active sites a site that it has not heard from
for a given time-out period; he time-out period may depend on the number of
sites or the observed average interarrival time of RTCP messages. Note that
not every periodic message has to contain all RTCP options; for example, the
MAIL part within the SDES option might only be sent every few messages.
The item types are defined below:
FMT 32 Format description.
format: 6 bits
The 'format' field corresponds to the index value from the
'format' RTP fixed header field, with values ranging from 0 to
63.
Clock quality: 8 bits
Provides an indication as to the sender-perceived quality of
the timestamps in the RTP header. The octet is interpreted
as a quantity indicating the maximum dispersion to a root time
server measured in fractions of a second and expressed as a
------------------------------
1. There is one exception to that rule: if an application sends FMT
options, the receiver has to decode these in order to properly interpret the
RTP payload.
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 17]
INTERNET-DRAFT RTP July 30, 1993
power of two.
If a source is known to be synchronized to standard time, but
with an unknown dispersion, or the dispersion is greater than
TBD, the value TBD is used. If the clock is based on the
nominal sample rate of the source, a value of TBD is used.
The clock quality indication can be used to judge how the delay
measurements reported by the QOS option can be interpreted (as
absolute delay or only as delay variation). It is also useful
for determining to what extent several sources with different
clocks can be synchronized.
Format-dependent data: variable
Format-dependent data may or may not appear in a FMT option.
It is passed to the next layer and not interpreted by RTP.
A FMT mapping changes the interpretation of a given 'format' value
(as carried in the fixed RTP header) starting at the packet
containing the FMT option. The new interpretation applies only
to packets from the synchronization source of this packet. A
sender should refrain from changing the mappings between the RTP
format field and the other fields in the FMT option that have been
established through a conference registry, a conference announcement
protocol or otherwise. Dynamic changes to these values may result
in misinterpretation of RTP payload if the packet(s) containing the
FMT option are lost.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| FMT | length |R|R| format | clock quality |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| format-dependent data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
SDES 33 This option provides a mapping between a numeric source identifier
and one or more identifying attributes. [Several attributes were
combined into one option to avoid multiple mappings from identifiers
to the receiver site data structure.] For those applications where
the size of a multipart SDES option would be a concern, multiple
SDES options may be formed with subsets of the parts to be sent in
separate packets.
An end system or a bridge uses an identifier value of zero to
identify itself. For each contributor, a bridge forwards the SDES
information received from that contributor, but changes the SDES
source identifier to correspond to the value used in the CSRC option
when identifying this contributor. A bridge that contributes data
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 18]
INTERNET-DRAFT RTP July 30, 1993
to outgoing packets should use a CSRC and select another non-zero
source identifier for that traffic and send CSRC and SDES options
for it.
Translators do not modify or insert SDES options. The end system
performs the same mapping it uses to identify the content sources
(that is, the combination of network source, synchronization source
and the source number within this SDES option) to identify a
particular source. SDES information is specific to a particular
flow identifier, unless a higher-layer control protocol defines
that all packets with the same source identifier (network and
transport-level source addresses and the optional SSRC value) from a
set of channels defined by the control protocol are described by the
same SDES.
Currently, the following items are defined. Each has a structure
similar to that of RTCP and RTP options, that is, a type field
followed by a length field (measured in multiples of four octets).
No final bit is needed since the overall length is known. All
of the SDES items are optional; however, if quality-of-service
monitoring is to be used, the ADDR and TSEL items need to be
provided (see QOS option).
type value description
ADDR 1 network address of source
TSEL 2 transport address
CNAME 4 canonical user and host identifier,
e.g., ``doe@sleepy.megacorp.com'' or
``sleepy.megacorp.com''
MAIL 5 user's electronic mail address
e.g., ``John.Doe@megacorp.com''
LOC 8 geographic user location,
e.g., ``Rm. 2A244, Berkeley Heights, NJ''
TXT 16 text describing the source,
e.g.,``John Doe, Bit Recycler, Megacorp''
Items are padded with the binary value zero to the next multiple of
four octets. Each item may appear only once unless otherwise noted.
A more description of the content of some of these types follows:
ADDR: A source may send several network addresses, but only one
for each address type value. Address types are identified by
the Domain Name Service Resource Record (RR) type, as specified
in the current edition of the Assigned Numbers RFC. For NSAP
addresses, the NSEL byte is not included.
TSEL: The protocol identifier uses the IP Protocol Numbers defined
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 19]
INTERNET-DRAFT RTP July 30, 1993
in the current edition of the Assigned Numbers RFC. The
figure shows the use of the TSEL item for the TCP and UDP
protocols. There must be no more than one TSEL item in an SDES
option. The TSEL item should precede any address information.
[Multiple concurrent transport addresses are not meaningful.
The ordering simplifies processing at the receiver.]
CNAME: The CNAME item must have the format ``user@host'' or
``host'', where ``host'' is the fully qualified domain name of
the host where the real-time data originates from, formatted
according to the rules specified in RFC 1034, RFC 1035 and
Section 2.1 of RFC 1123. The ``host'' form may be used if a
user name is not available, for example on single-user systems.
The user name should be in a form that a program such as
``finger'' or ``talk'' could use, i.e., it typically is the
login name rather than the ``real life'' name. Note that the
host name is not necessarily identical to the electronic mail
address of the participant. The latter is provided through the
MAIL item.
LOC: Depending on the application, different degrees of detail are
appropriate for this item. For conference applications, a
string like ``Tampere, Finland'' may be sufficient, while for
an active badge system, strings like ``Room 2A244, AT&T BL MH''
might be appropriate.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| SDES | length | source identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = ADDR | length | reserved | address type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| network-layer address ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = ADDR | length = 2 | reserved | addr. type = 1|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = TSEL | length | reserved | transport pro.|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| transport-address (port number) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 20]
INTERNET-DRAFT RTP July 30, 1993
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = TSEL | length | reserved | protocol = 6 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| reserved | TCP port number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = TSEL | length | reserved | protocol = 17 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| reserved | UDP port number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = CNAME | length | user and domain name ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = MAIL | length | electronic mail address ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = LOC | length | geographic location of site ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = TXT | length | text describing source ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
BYE 35 The BYE option indicates that a particular site is no longer
active. A bridge sends BYE options with a (non-zero) content source
value. An identifier value of zero indicates that the source
indicated by the synchronization source (SSRC) option and network
address is no longer active. If a bridge shuts down, it should
first send BYE options for all content sources it handles, followed
by a BYE option with an identifier value of zero. Each RTCP message
can contain one or more BYE messages. [Multiple identifiers in a
single BYE option are not allowed to avoid ambiguities between the
special value of zero and any necessary padding.]
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| BYE | length = 1 | content source identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
QOS 36 Quality of service measurement. The QOS options describes
statistics of a single synchronization source. The synchronization
source is identified by one of the ADDR items from the SDES option
together with the TSEL item from the SDES option. The SDES items
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 21]
INTERNET-DRAFT RTP July 30, 1993
are appended directly to the fixed-length part of the QOS option,
with TSEL following ADDR. For a description of these items, see the
SDES option.
The other fields of the option contains the number of packets
received (32 bits), the number of packets expected (32 bits), the
minimum delay, the maximum delay and the average delay. The delay
measures are encoded as 16/16 NTP timestamps, that is, 16 bits
encode the number and seconds and 16 bits the fraction of a second.
A single RTCP packet may contain several QOS options. It is left
to the implementor to decide how often to transmit QOS options
and which sources are to be included. [The timestamp format
is identical to the one used in the fixed RTP header. The
quality-of-service information is identical to that carried in the
reverse control option.]
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| QOS | length | synchronization source |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| packets expected |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| packets received |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| minimum delay (seconds) | minimum delay (fraction) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| maximum delay (seconds) | maximum delay (fraction) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| average delay (seconds) | average delay (fraction) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = ADDR | length | reserved | address type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| network-layer address ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| type = TSEL | length | reserved | transport pro.|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| transport-address (port number) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
5 Security Considerations
IP multicast provides no direct means for a sender to know all the receivers
of the data sent. RTP options make it easy for all participants in a
conference to identify themselves; if deemed important for a particular
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 22]
INTERNET-DRAFT RTP July 30, 1993
application, it is the responsibility of the application writer to make
listening without identification difficult. It should be noted, however,
that within an internet, privacy of the payload can generally only be
assured by encryption.
The periodic transmission of session messages may make it possible to detect
denial-of-service attacks. For many types of payload expected to be carried
in RTP packets, such as compressed audio and video, the data is very close
to white noise, making statistics-based ciphertext-only attacks difficult.
Without MICS/MICA options, it may even be difficult to detect automatically
when the code has been broken. However, the session information is
more or less constant and predictable, allowing known-plaintext attacks.
Chosen-plaintext attacks appear to be difficult.
Since the timestamp in the RTP header is protected by the message integrity
check options, some replay attacks can be detected if the receiver can bound
the maximum packet delay and clock offset of the sender.
Without authentication, the SDES fields may be used to impersonate another
site. Impersonation and denial-of-service attacks can be made more
difficult by providing digital signatures for all or parts of a message.
The MICA or MICS and ENC RTP options described in Section 3 support
privacy within group communications. The issues of key distribution and
a certification hierarchy are outside the scope of this document. A
direct mapping of all PEM header fields into RTCP option types would
be straightforward and would allow reuse of existing PEM implementations.
However, it is questionable whether loose conference control is the
appropriate mechanism for distributing key and certificate information.
6 RTP over network and transport protocols
This section describes issues specific to carrying RPDUs over particular
network and transport protocols.
6.1 Defaults
The following rules apply unless superseded by protocol-specific subsections
in this section.
If RTP protocol data units (RPDU) are carried over underlying protocols that
provide the abstraction of a continuous bit stream rather than messages,
each RPDU is prefixed by a 32-bit framing field containing the length of
the RPDU measured in octets, not including the framing field itself. If an
RPDU traverses a path over a mixture of octet-stream and message-oriented
protocols, each RTP-level bridge between these protocols is responsible for
adding and removing the framing field. A profile may determine that framing
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 23]
INTERNET-DRAFT RTP July 30, 1993
is to be used for protocols that do provide framing in order to allow
carrying several RPDUs in one underlying protocol data unit. [Carrying
several RPDUs in one network or transport packet reduces header overhead and
may ease synchronization between different streams.]
6.2 ST-II
The next protocol field (``NextPCol'', Section 4.2.2.10 in RFC 1190) is
used to distinguish two encapsulations of RTP over ST-II. The first uses
NextPCol value TBD and directly places the RPDU into the ST-II data area.
If NextPCol value TBD is used, the RTP header is preceded by a 32-bit header
shown below. The byte count determines the number of bytes in the RTP
header and payload to be checksummed. The 16-bit checksum uses the TCP and
UDP checksum algorithm.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| count of bytes to be checked | check sum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
... RTP header ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
A Implementation Notes
We describe aspects of the receiver implementation in this section. There
may be other implementation methods that are faster in particular operating
environments or have other advantages. These implementation notes are for
informational purposes only.
A.1 Timestamp recovery
A fully specified NTP timestamp with 32 bits of full seconds and 16 bits of
resolution for the fractional seconds can be easily recovered from the RTP
timestamp. The following code stores timestamps as the 48-bit whole part of
a double precision floating point number:
#include <math.h>
typedef double CLOCK_t;
typedef unsigned long u_long;
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 24]
INTERNET-DRAFT RTP July 30, 1993
#define MAX32_bit 4294967296.
#define MAX31 0x7fffffff
CLOCK_t extend_timestamp(t, now)
u_long t; /* in: timestamp, low-order 32 bits */
double now; /* in: current local time */
{
u_long high, low; /* high and low order bits of 48-bit clock */
low = fmod(x, MAX_32bit);
high = now / MAX_32bit;
if ((low > t) && (low - t > MAX31)) high++;
else if ((low < t) && (t - low > MAX31)) high--;
return high * MAX_32bit + t;
} /* extend_timestamp */
Using the full timestamp internally has the advantage that the remainder of
the receiver code does not have to be concerned with modulo arithmetic. The
current local time does not have to be derived directly from the system
clock for every packet; a clock based on samples, e.g., incremented by the
nominal audio frame duration, is sufficient.
A.2 Detecting the Beginning of a Synchronization Unit
RTP packets contain a bit flag indicating the end of a synchronization unit.
The following code fragment determines if a packet is the beginning of a
synchronization unit:
CLOCK_t eos_t, t, now;
int flag;
struct {
unsigned int ver:2; /* version number */
unsigned int flow:6; /* flow */
unsigned int o:1; /* option present */
unsigned int s:1; /* sync bit */
unsigned int format:6; /* content type */
u_short seq; /* sequence number */
u_long ts; /* time stamp */
} *h;
t = extend_timestamp(h->ts, now);
if (h->s) {
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 25]
INTERNET-DRAFT RTP July 30, 1993
flag = 1;
eos_t = t;
}
else if (flag && t > eot_t) {
flag = 0;
/* handle beginning of synchronization unit */
}
(The structure definition has to be changed for little endian systems.)
A.3 Demultiplexing and Locating the Synchronization Source
For a combination of multicast or destination unicast address, destination
port, the flow ID determines the channel. For each channel, the receiver
maintains a list of all sources, content and synchronization sources alike
in a table or other suitable datastructure. Synchronization sources are
stored with a content source value of zero. When an RTP packet arrives, the
receiver determines its network source address and port (from information
returned by the operating system), synchronization source (SSRC option) and
content source(s) (CSRC option). To locate the table entry containing
timing information, mapping from content descriptor to actual encoding,
etc., the receiver sets the content source to zero and locates a table
entry based on the triple (network address and port, synchronization source
identifier, 0).
The receiver identifies the contributors to the packet (for example, the
speaker who is heard in the packet) through the list of content sources
carried in the CSRC option. To locate the table entry, it matches on the
triple (network address and port, synchronization source identifier, content
source).
Note that since network addresses are only generated locally at the
receiver, the receiver can choose whatever format seems most appropriate for
matching. For example, a Berkeley Unix-based system may use struct sockaddr
data types if it expects network sources with non-IP addresses.
Acknowledgments
This draft is based on discussion within the IETF audio-video transport
working group chaired by Stephen Casner. The current protocol has its
origins in the Network Voice Protocol and the Packet Video Protocol (Danny
Cohen and Randy Cole) and the protocol implemented by the 'vat' application
(Van Jacobson and Steve McCanne). Stuart Stubblebine (ISI) helped with
the security aspects of RTP. Ron Frederic (Xerox PARC) provided extensive
editorial assistance.
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 26]
INTERNET-DRAFT RTP July 30, 1993
B Addresses of Authors
Stephen Casner
USC/Information Sciences Institute
4676 Admiralty Way
Marina del Rey, CA 90292-6695
telephone: +1 310 822 1511 (extension 153)
electronic mail: casner@isi.edu
Henning Schulzrinne
AT&T Bell Laboratories
MH 2A244
600 Mountain Avenue
Murray Hill, NJ 07974
telephone: +1 908 582 2262
electronic mail: hgs@research.att.com
References
[1] J. Postel, ``Internet protocol,'' Network Working Group Request for
Comments RFC 791, Information Sciences Institute, Sept. 1981.
[2] International Standards Organization, ``ISO/IEC DIS 10646-1:1993
information technology -- universal multiple-octet coded character set
(UCS) -- part I: Architecture and basic multilingual plane,'' 1993.
[3] The Unicode Consortium, T_h_e_ U_n_i_c_o_d_e_ S_t_a_n_d_a_r_d_. New York, New York:
Addison-Wesley, 1991.
[4] D. L. Mills, ``Network time protocol (version 3) -- specification,
implementation and analysis,'' Network Working Group Request for
Comments RFC 1305, University of Delaware, Mar. 1992.
[5] D. Balenson, ``Privacy enhancement for internet electronic mail: Part
III: Algorithms, modes, and identifiers,'' Network Working Group
Request for Comments RFC 1423, IETF, Feb. 1993.
[6] V. L. Voydock and S. T. Kent, ``Security mechanisms in high-level
network protocols,'' A_C_M_ C_o_m_p_u_t_i_n_g_ S_u_r_v_e_y_s_, vol. 15, pp. 135--171,
June 1983.
[7] J. Kaliski, Burton S., ``The md2 message-digest algorithm,'' Network
Working Group Request for Comments RFC 1319, RSA Laboratories, Apr.
1992.
[8] R. Rivest, ``The MD5 message-digest algorithm,'' Network Working Group
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 27]
INTERNET-DRAFT RTP July 30, 1993
Request for Comments RFC 1321, IETF, Apr. 1992.
[9] P. Mockapetris, ``Domain names -- concepts and facilities,'' Network
Working Group Request for Comments RFC 1034, ISI, Nov. 1987.
[10] P. Mockapetris, ``Domain names -- implementation and specification,''
Network Working Group Request for Comments RFC 1035, ISI, Nov. 1987.
H. Schulzrinne/S. Casner Expires 10/01/93 [Page 28]